Aula 4 - Gráficos (ggplot e extensões)

Escola de Métodos em Ciência Política

Frederico Bertholini

Rode seus pacotes!

lapply(c("tidyverse","haven","lubridate",
         "janitor","readxl",
          "stringr", "magrittr","srvyr",
         "survey"),require,character.only=T)

Visualização de dados

onde estamos?

Uma exibição gráfica deve (1/2)

Mostrar os dados

Induzir o observador a pensar em sua substância, não em metodologia ou tecnologia de produção

Evitar distorcer o que os dados dizem

Apresentar muitos números em pequenos espaços

Tornar grandes conjuntos de dados coerentes

Uma exibição gráfica deve (2/2)

Encorajar o observador a comparar diferentes partes dos dados

Revelar diferentes níveis de detalhamento dos dados

Servir a um propósito claro e razoável: descrição, exploração, tabulação ou decoração

Estar integrada com as descrições estatísticas e verbais do conjunto de dados

4 princípios (Edward Tufte)

Miniaturas Múltiplas

Menor diferença efetiva

Causalidade (Respondendo a pergunta: “Comparado com o quê?”)

Contexto

O que você quer mostrar?

Andrew Abela Chart chooser

Animado

Princípios

  • O que você quer mostrar?

  • Elementos que podem destacar ou confundir o que você quer mostrar.

  • vamos tentar alternar “teoria” com live code

  • Ah, mas eu posso usar base R? Poder, pode…

plot(mtcars$wt, mtcars$mpg)

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point()

ggplot

Recursos

Elementos do ggplot

  • Dados

  • Geometrias

  • Estéticas

  • Escalas (estética)

  • Escalas (eixos)

  • Tema

  • Facet

Dados data =

  • Dado empilhado?

  • Cada coluna será uma entrada!

Geometrias geom_

geometrias

https://ggplot2.tidyverse.org/reference/index.html#section-layers

Estéticas aes()

  • x (xmax e xmin)

  • y(ymax e ymin)

  • color

  • fill

  • shape

  • group

  • size

Escalas (estética) scale_

  • scale_color_xx

  • scale_fill_xx

  • scale_shape_xx

Escalas (eixos) scale_x

  • Contínua scale_x_continuous

  • Discreta scale_x_discrete

  • Tempo scale_yearmon

  • Série de tempo zooe lubridate –> scale_yearmon

Tema

  • Customização total da visualização

  • Eixos

  • Texto element_text

  • linhas de grade

Facet

  • facet_grid

  • facet_wrap

Adicionais

Gráficos com interatividade:

Combinação de gráficos

Exercício

  • Carregue os dados de exemplo do pacote survey data(api), use o data.frame apisrs

  • Crie o objeto tbl_svy com o nome amostra_expandida expandindo a amostra aleatória simples usando apenas a variável (coluna) “pw”, contendo o peso amostral. Dica: execute as_survey(weight=pw).

  • Usando a variável stype crie uma nova variável indicando se a escola é de nível fundamental (categorias E e M de stype) ou de nível médio (categoria H de stype). Dica: use mutatee case_when.

  • Faça um gráfico de barras comparando a variação média das notas de 1999 (api99) e 2000 (api00) por nível e utilize as estimativas intervalares. Dica: olhe o código da aula 07, utilize geom_errorbar para a estimativa intervalar.

Resolução

data(api)

amostra_expandida <- apisrs %>% 
  as_survey(weight = pw) %>%
  mutate(nivel=case_when(
    stype=="E"~"Fundamental",
    stype=="M"~"Fundamental",
    stype=="H"~"Médio"
  ))

out <- amostra_expandida %>%
  group_by(nivel) %>%
  summarise(api_diff = 
              survey_mean(api00 - api99, vartype = "ci"))

grafico <- out %>% 
  ggplot(aes(x = nivel, y = api_diff, 
             fill = nivel,color=nivel,
                       ymax = api_diff_upp, 
             ymin = api_diff_low)) +
  geom_bar(stat = "identity",alpha=0.6) +
  geom_errorbar(width = 0,size=3) 

grafico 

grafico + labs(y="Variação das notas",x="",color="Nível",fill="Nível") + theme_minimal()